home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / -seriously_amiga- / shareware / programming / e / easyplugins / source / xygadget.e < prev   
Text File  |  1997-12-06  |  3KB  |  121 lines

  1.  
  2. /*
  3.  
  4.     xygadget_plugin: part of the EasyPLUGINs package
  5.  
  6. */
  7.  
  8. OPT MODULE, OSVERSION=37
  9.  
  10. MODULE 'tools/easygui', 'intuition/intuition',
  11.        'graphics/text', 'intuition/gadgetclass',
  12.        'gadtools', 'libraries/gadtools',
  13.        'utility', 'utility/tagitem'
  14.  
  15. EXPORT OBJECT xygadget_plugin OF plugin PRIVATE
  16.  
  17.     contents:PTR TO CHAR
  18.     disabled
  19.  
  20.     gad:PTR TO gadget
  21.  
  22. ENDOBJECT
  23.  
  24. -> PROGRAMMER_ID | MODULE_ID
  25. ->      $01      |   $04
  26.  
  27.  
  28. EXPORT ENUM PLA_XYGadget_Text=$81040001,
  29.             PLA_XYGadget_Disabled
  30.  
  31. PROC xygadget(tags:PTR TO tagitem) OF xygadget_plugin
  32.  
  33.     IF utilitybase
  34.  
  35.         self.contents:=GetTagData(PLA_XYGadget_Text, '', tags)
  36.         self.disabled:=GetTagData(PLA_XYGadget_Disabled, FALSE, tags)
  37.  
  38.     ELSE
  39.  
  40.         Raise("util")
  41.  
  42.     ENDIF
  43.  
  44. ENDPROC
  45.  
  46. ->> xygadget_plugin: set() & get()
  47.  
  48. PROC set(attr, value) OF xygadget_plugin
  49.  
  50.     SELECT attr
  51.  
  52.         CASE PLA_XYGadget_Text
  53.  
  54.             IF self.contents<>value
  55.  
  56.                 self.contents:=value
  57.  
  58.                 IF (self.gad AND self.gh.wnd)
  59.  
  60.                     Gt_SetGadgetAttrsA(self.gad, self.gh.wnd, NIL, [GA_TEXT, self.contents, TAG_DONE])
  61.  
  62.                 ENDIF
  63.  
  64.             ENDIF
  65.  
  66.         CASE PLA_XYGadget_Disabled
  67.  
  68.             IF self.disabled<>value
  69.  
  70.                 self.disabled:=value
  71.  
  72.                 IF (self.gad AND self.gh.wnd)
  73.  
  74.                     Gt_SetGadgetAttrsA(self.gad, self.gh.wnd, NIL, [GA_DISABLED, self.disabled, TAG_DONE])
  75.  
  76.                 ENDIF
  77.  
  78.             ENDIF
  79.  
  80.     ENDSELECT
  81.  
  82. ENDPROC
  83.  
  84. PROC get(attr) OF xygadget_plugin
  85.  
  86.     SELECT attr
  87.  
  88.         CASE PLA_XYGadget_Text;             RETURN self.contents, TRUE
  89.         CASE PLA_XYGadget_Disabled;         RETURN self.disabled, TRUE
  90.  
  91.     ENDSELECT
  92.  
  93. ENDPROC -1, FALSE
  94.  
  95. PROC min_size(ta:PTR TO textattr, fh) OF xygadget_plugin
  96. ENDPROC (IntuiTextLength([1, 0, NIL, 0, 0, ta, self.contents, NIL]:intuitext)+16), (fh+12)
  97.  
  98. ->PROC will_resize() OF xygadget_plugin IS (RESIZEX OR RESIZEY)
  99.  
  100. PROC gtrender(gl, vis, ta:PTR TO textattr, x, y, xs, ys, win:PTR TO window) OF xygadget_plugin
  101.  
  102.     self.gad:=CreateGadgetA(BUTTON_KIND, gl,
  103.                             [x, y, xs, ys, self.contents, ta, NIL, 0, vis, 0]:newgadget,
  104.                             [GA_DISABLED, self.disabled,
  105.                              TAG_DONE])
  106.  
  107. ENDPROC self.gad
  108.  
  109. PROC message_test(imsg:PTR TO intuimessage, win:PTR TO window) OF xygadget_plugin
  110.  
  111.   IF imsg.class=IDCMP_GADGETUP THEN RETURN (imsg.iaddress=self.gad)
  112.  
  113. ENDPROC FALSE
  114.  
  115. -> this ensures that the defined action in the EasyGUI layout is called
  116. PROC message_action(class, qual, code, win:PTR TO window) OF xygadget_plugin IS TRUE
  117.  
  118. /* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& */
  119.  
  120.  
  121.